#include "A.h"
#include "B.h"
#include "Singleton.h"
#include <iostream>
using namespace std;
using namespace sf::utility;

int main(int argc, char *argv[])
{
    // A::instance()->show();
    // cout << endl;
    // B::instance()->show();

    // Singleton<A>::instance()->show();
    // cout << "--------------------------------" << endl;
    // Singleton<B>::instance()->show();

    /*
        线程安全
        1.主线程先把单例对象资源给创建出来
        2.子线程根据主线程创建出来的对象去处理相应的任务
    */
    // 主线程
    Singleton<A>::instance();
    Singleton<B>::instance();

    // 子线程
    Singleton<A>::instance()->show();
    cout << "===============================" << endl;
    Singleton<B>::instance()->show();

    return 0;
}